package pe.com.bn.sach.dao.impl;

import java.util.ArrayList;

import java.util.List;


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger;

import com.ibatis.sqlmap.client.SqlMapClient;
import pe.com.bn.sach.dao.InmuebleDAO;
import pe.com.bn.sach.domain.Bnchf35Inmueble;
import pe.com.bn.sach.domain.Bnchf36ExpVendedor;
import pe.com.bn.sach.domain.Bnchf36Vendedor;

import pe.com.bn.sach.seguridad.DatosSesion;
import pe.com.bn.sach.common.Constante;

public class InmuebleImpl implements InmuebleDAO {
	
	/** Logger for this class and subclasses */ 
    private static Logger log = Logger.getLogger(InmuebleImpl.class.getName());
    protected final Log logger = LogFactory.getLog(getClass());
      
    protected SqlMapClient sqlMap = null;	 
	public void setSqlMap(SqlMapClient sqlMap) {
		this.sqlMap = sqlMap;
	} 
	 
	
	//
	public int CountExpVendedor(Bnchf36ExpVendedor bnchf36ExpVendedor) throws Exception{
		int id=0; 
	       try {      
	    	    String id1= (String)sqlMap.queryForObject("sqlExpVendedor.CountExpVendedor",bnchf36ExpVendedor);
	    	    if(id1==null){id1="0";}	    	    
	    	    id=Integer.parseInt(id1+"");
	            return id;
	        } catch (Exception e) {
	        	return 0;
	        }
	}
	
	public String CountEvalInmuebl(Bnchf36ExpVendedor bnchf36ExpVendedor) throws Exception{

		
		       try {      
	    	    String id = (String)sqlMap.queryForObject("sqlExpVendedor.CountEvalInmueblx",bnchf36ExpVendedor);
	    	   
	    	    if(id==null){
	    	    	id="0";
	    	    	}
	            return id;
	        } catch (Exception e) {	        	
	        	logger.error("Error	"+e);
	        	return "0";
	        }
	}

	
	public void ActualizaExpVendedorStadoCheq(Bnchf36ExpVendedor  bnchf36ExpVendedor) throws Exception{
		
		
		
		
		
		
		
		
		try{
			sqlMap.startTransaction();
			sqlMap.update("sqlExpVendedor.ActualizaExpVendedorStadoCheq",bnchf36ExpVendedor); 
			sqlMap.commitTransaction();
		}catch(Exception e){
			e.printStackTrace();
			throw e;
		}finally{
			sqlMap.endTransaction();
		}

	}
	
	public List listaVendedor(Bnchf35Inmueble  bnchf35Inmueble) throws Exception{
		
		return sqlMap.queryForList("sqlInmueble.listavendedorxInmueble",bnchf35Inmueble); 
	}
	
	//f36IdInmueble
	public List ListarVendedorxInmueble(Bnchf36Vendedor  bnchf36Vendedor) throws Exception{ 
		//listarInmueblexVendedor
		return sqlMap.queryForList("sqlExpVendedor.listarInmueblexVendedor",bnchf36Vendedor);
	}
	 
	public List BuscarVendedor(Bnchf36Vendedor bnchf36Vendedor) throws Exception{
		return sqlMap.queryForList("sqlExpVendedor.BuscarVendedor",bnchf36Vendedor);
	}
	
	public List ListarInmueble(Bnchf35Inmueble  bnchf35Inmueble) throws Exception{
		
		return sqlMap.queryForList("sqlInmueble.listaInmueble",bnchf35Inmueble);
		
	}
	//encontrar vendedor
	
	public Bnchf36Vendedor EncontrarVendedor(Bnchf36Vendedor  bnchf36Vendedor) throws Exception{
		return (Bnchf36Vendedor)sqlMap.queryForList("sqlExpVendedor.encontrarVendedor",bnchf36Vendedor).get(0); 
	}
	
	public Bnchf35Inmueble encontrarInmueble(Bnchf35Inmueble  bnchf35Inmueble)throws Exception{		
		
		List l = sqlMap.queryForList("sqlInmueble.encontrarInmueble",bnchf35Inmueble);
		bnchf35Inmueble=(Bnchf35Inmueble)l.get(0);
		
		return bnchf35Inmueble;
	}
 
	public void ModificarMontosInmueble(Bnchf35Inmueble  bnchf35Inmueble)throws Exception{

		try{
			sqlMap.startTransaction();
			sqlMap.update("sqlInmueble.ActualizarMontosInmueble",bnchf35Inmueble); 
			sqlMap.commitTransaction();
		}catch(Exception e){
			e.printStackTrace();
			throw e;
		}finally{
			sqlMap.endTransaction();
		}
		
	}
public String ModificarInmueble(Bnchf35Inmueble  bnchf35Inmueble,List bnchf36VendedorList)throws Exception{
	

	//sqlMap.startTransaction(); 
	Bnchf36ExpVendedor bnchf36ExpVendedor=new Bnchf36ExpVendedor();
	bnchf36ExpVendedor.getId().getBnchf35Inmueble().getId().setF35IdInmueble(bnchf35Inmueble.getId().getF35IdInmueble());
	bnchf36ExpVendedor.getId().getBnchf35Inmueble().getId().getBnchf13Expediente().setF13IdExpediente(bnchf35Inmueble.getId().getBnchf13Expediente().getF13IdExpediente());	
	Bnchf36Vendedor bnchf36Vendedor=new Bnchf36Vendedor();
	Bnchf36Vendedor bnchf36Vendedor1=new Bnchf36Vendedor(); 
	bnchf35Inmueble.getId().getBnchf13Expediente().getF13IdExpediente();
	

	
	try{
			sqlMap.startTransaction();
			sqlMap.update("sqlInmueble.ActualizarInmueble",bnchf35Inmueble);		
			int id=0;
		
			List bnchf36ExpVendedorList=new ArrayList();
			List vendedorList=new ArrayList();
			for (int i = 0; i < bnchf36VendedorList.size(); i++){
			bnchf36Vendedor=new Bnchf36Vendedor();
			bnchf36Vendedor=(Bnchf36Vendedor)bnchf36VendedorList.get(i);
			bnchf36ExpVendedor=new Bnchf36ExpVendedor();
			bnchf36ExpVendedor.getId().getBnchf35Inmueble().getId().getBnchf13Expediente().setF13IdExpediente(""+bnchf35Inmueble.getId().getBnchf13Expediente().getF13IdExpediente());
			bnchf36ExpVendedor.getId().getBnchf35Inmueble().getId().setF35IdInmueble(bnchf35Inmueble.getId().getF35IdInmueble());
			bnchf36ExpVendedor.getId().getBnchf36Vendedor().setF36IdVendedor(bnchf36ExpVendedor.getId().getBnchf36Vendedor().getF36IdVendedor());
			bnchf36ExpVendedor.setF36UsrReg(bnchf35Inmueble.getF35UsrReg());
			bnchf36ExpVendedor.setF36IdUsuaCrea(bnchf35Inmueble.getF35IdUsuaCrea());
			
		  	int var=-1;
		  	try{var=Integer.parseInt(""+bnchf36Vendedor.getF36IdVendedor());}catch(Exception e) {var=-1;}
		  		//bnchf36Vendedor=set(bnchf36Vendedor);
		  		if(bnchf36Vendedor.getF36IdVendedor()==null || var==0){
		  		id=Integer.parseInt(NextVendedor(bnchf36Vendedor1)+"");	  		
		  		bnchf36Vendedor.setF36IdVendedor(new Long(""+id));
		  		
		  		bnchf36Vendedor.setF36UsrReg(bnchf35Inmueble.getF35UsrReg());//ojo modificar
		  		bnchf36Vendedor.setF36Stdo(new Long(""+Constante.gBN_CONST_ESTADO_DE_REGISTRO_DE_TABLA_ACTIVO));
		  		bnchf36Vendedor.setF36IdUsuaCrea(bnchf35Inmueble.getF35IdUsuaCrea());
		  		
		  		sqlMap.insert("sqlExpVendedor.Guardar",bnchf36Vendedor);	  		
		  		bnchf36ExpVendedor.getId().getBnchf36Vendedor().setF36IdVendedor(new Long(""+(id)));
		  		}else{  
			  	  		
			  	sqlMap.update("sqlExpVendedor.Modificar",bnchf36Vendedor);
			  	bnchf36ExpVendedor.getId().getBnchf36Vendedor().setF36IdVendedor(bnchf36Vendedor.getF36IdVendedor());	  	
		  		}
		  		
			  	bnchf36ExpVendedor.setF36CondVend(bnchf36Vendedor.getF36CondVend());
			  	bnchf36ExpVendedor.setF36DescComent(bnchf36Vendedor.getF36DescComent());		  	
			  	vendedorList.add(new Long(bnchf36Vendedor.getF36IdVendedor()+""));		  	
		  		bnchf36ExpVendedorList.add(bnchf36ExpVendedor);
			}
		
			Bnchf36ExpVendedor bnchf36ExpVendedorBean=new Bnchf36ExpVendedor();			
		
			for(int i = 0; i < bnchf36ExpVendedorList.size(); i++){
					bnchf36ExpVendedorBean=new Bnchf36ExpVendedor();
					bnchf36ExpVendedorBean=(Bnchf36ExpVendedor)bnchf36ExpVendedorList.get(i);
					
					int valor=CountExpVendedor(bnchf36ExpVendedorBean);
				 		
					if(valor<=0){
						
						sqlMap.insert("sqlExpVendedor.GuardarExpVendedor",bnchf36ExpVendedorBean);
					}else{
						
						sqlMap.update("sqlExpVendedor.ModificarExpVendedor",bnchf36ExpVendedorBean);
						}		
			}		
			
			bnchf36ExpVendedor.setListVendedores(vendedorList);
			
			if(vendedorList.size()>=1)  
			sqlMap.delete("sqlExpVendedor.EliminarExpVendedor",bnchf36ExpVendedor);
			else
			sqlMap.delete("sqlExpVendedor.EliminarExpVendedorTodos",bnchf36ExpVendedor);	
			
			
		sqlMap.commitTransaction();
	}catch(Exception e){
		e.printStackTrace();
		throw e;
	}finally{
		sqlMap.endTransaction();
	}

	return "";
}

public String GuardarInmueble(Bnchf35Inmueble  bnchf35Inmueble,List bnchf36VendedorList)throws Exception{
	
	try{
		sqlMap.startTransaction();
		
		
		Bnchf36Vendedor bnchf36Vendedor=new Bnchf36Vendedor();
		Bnchf36Vendedor bnchf36Vendedor1=new Bnchf36Vendedor();
		bnchf35Inmueble.getId().getBnchf13Expediente().getF13IdExpediente();
		Bnchf36ExpVendedor bnchf36ExpVendedor=new Bnchf36ExpVendedor();		
		bnchf35Inmueble.getId().setF35IdInmueble(new Long(NextInmueble(bnchf35Inmueble)));
	
		sqlMap.update("sqlInmueble.ActualizarEstadoInmueble",bnchf35Inmueble);
		sqlMap.insert("sqlInmueble.GuardaInmueble",bnchf35Inmueble);	
		int id=0;	
		
		bnchf36ExpVendedor.getId().getBnchf35Inmueble().getId().getBnchf13Expediente().setF13IdExpediente(bnchf35Inmueble.getId().getBnchf13Expediente().getF13IdExpediente());
		bnchf36ExpVendedor.getId().getBnchf35Inmueble().getId().setF35IdInmueble(bnchf35Inmueble.getId().getF35IdInmueble());	     
		
		List bnchf36ExpVendedorList=new ArrayList();
		List vendedorList=new ArrayList();
		for (int i = 0; i < bnchf36VendedorList.size(); i++){
			bnchf36Vendedor=new Bnchf36Vendedor();
			bnchf36Vendedor=(Bnchf36Vendedor)bnchf36VendedorList.get(i);
			bnchf36ExpVendedor=new Bnchf36ExpVendedor();
			bnchf36ExpVendedor.getId().getBnchf35Inmueble().getId().getBnchf13Expediente().setF13IdExpediente(""+bnchf35Inmueble.getId().getBnchf13Expediente().getF13IdExpediente());
			bnchf36ExpVendedor.getId().getBnchf35Inmueble().getId().setF35IdInmueble(bnchf35Inmueble.getId().getF35IdInmueble());
			bnchf36ExpVendedor.getId().getBnchf36Vendedor().setF36IdVendedor(bnchf36ExpVendedor.getId().getBnchf36Vendedor().getF36IdVendedor());
			
			bnchf36ExpVendedor.setF36UsrReg(bnchf35Inmueble.getF35UsrReg());
			bnchf36ExpVendedor.setF36IdUsuaCrea(bnchf35Inmueble.getF35IdUsuaCrea());
			
		  	int var=-1;
		  	try{var=Integer.parseInt(""+bnchf36Vendedor.getF36IdVendedor());}catch(Exception e) {var=-1;}
		     	//bnchf36Vendedor=set(bnchf36Vendedor);	   		 
	  		if(bnchf36Vendedor.getF36IdVendedor()==null || var==0){
		  		id=Integer.parseInt(NextVendedor(bnchf36Vendedor1)+"");	  		
		  		bnchf36Vendedor.setF36IdVendedor(new Long(""+id));
		  		
		  		bnchf36Vendedor.setF36UsrReg(bnchf35Inmueble.getF35UsrReg());//ojo modificar
		  		bnchf36Vendedor.setF36Stdo(new Long(""+Constante.gBN_CONST_ESTADO_DE_REGISTRO_DE_TABLA_ACTIVO));
		  		bnchf36Vendedor.setF36IdUsuaCrea(bnchf35Inmueble.getF35IdUsuaCrea());
		  		sqlMap.insert("sqlExpVendedor.Guardar",bnchf36Vendedor);	  		
		  		bnchf36ExpVendedor.getId().getBnchf36Vendedor().setF36IdVendedor(new Long(""+(id)));
	  		}else{  
			  	  		
			  	sqlMap.update("sqlExpVendedor.Modificar",bnchf36Vendedor);
			  	bnchf36ExpVendedor.getId().getBnchf36Vendedor().setF36IdVendedor(bnchf36Vendedor.getF36IdVendedor());	  	
	  		}
	  		
	  			
		  	bnchf36ExpVendedor.setF36CondVend(bnchf36Vendedor.getF36CondVend());
		  	bnchf36ExpVendedor.setF36DescComent(bnchf36Vendedor.getF36DescComent());		  	
		  	vendedorList.add(new Long(bnchf36Vendedor.getF36IdVendedor()+""));		  	
	  		bnchf36ExpVendedorList.add(bnchf36ExpVendedor);
		}  
		Bnchf36ExpVendedor bnchf36ExpVendedorBean=new Bnchf36ExpVendedor();
		
		for(int i = 0; i < bnchf36ExpVendedorList.size(); i++){
				bnchf36ExpVendedorBean=new Bnchf36ExpVendedor();
				bnchf36ExpVendedorBean=(Bnchf36ExpVendedor)bnchf36ExpVendedorList.get(i);
			
				int valor=CountExpVendedor(bnchf36ExpVendedorBean);
							
				if(valor<=0){
					
					sqlMap.insert("sqlExpVendedor.GuardarExpVendedor",bnchf36ExpVendedorBean);
				}else{
					
					sqlMap.update("sqlExpVendedor.ModificarExpVendedor",bnchf36ExpVendedorBean);
				}	
		}		
		
		bnchf36ExpVendedor.setListVendedores(vendedorList);
		
		if(vendedorList.size()>=1)
			sqlMap.delete("sqlExpVendedor.EliminarExpVendedor",bnchf36ExpVendedor);			
		else
			sqlMap.delete("sqlExpVendedor.EliminarExpVendedorTodos",bnchf36ExpVendedor);
		
		sqlMap.commitTransaction();
	}catch(Exception e){
		e.printStackTrace();
		throw e;
	}finally{
		sqlMap.endTransaction();
	}

	return "";
}
	public String BajarInmueble(Bnchf35Inmueble  bnchf35Inmueble)throws Exception{
		try{
			sqlMap.startTransaction();
			sqlMap.update("sqlInmueble.BajarInmueble",bnchf35Inmueble);
			sqlMap.commitTransaction();
		}catch(Exception e){
			e.printStackTrace();
			throw e;
		}finally{
			sqlMap.endTransaction();
		}

		return "";
	}
	
	public String BajarInmueble(Bnchf35Inmueble  bnchf35Inmueble, DatosSesion datosSesion)throws Exception{
		
	
		bnchf35Inmueble.setF35IdUsuaModi(datosSesion.getCodigoUsuario());
		
		try{
			sqlMap.startTransaction();
			sqlMap.update("sqlInmueble.BajaInmueble",bnchf35Inmueble);
			sqlMap.commitTransaction();
		}catch(Exception e){
			e.printStackTrace();
			throw e;
		}finally{
			sqlMap.endTransaction();
		}
		
	
		return "";
	}
	
	public String NextInmueble(Bnchf35Inmueble bnchf35Inmueble) throws Exception{
	       try {      
	       			
	    	    String id = (String)sqlMap.queryForObject("sqlInmueble.NextInmueble",bnchf35Inmueble);	    	    
	            if(id ==null){
	            	id="1";
	            }
	            return id;
	        } catch (Exception e) {
	            throw new Exception("Error en generar codigo expediente: " + e);
	        }
	}	 
	/*VerificaDniRuc */

	public boolean VerificaDniRuc(Bnchf36Vendedor bnchf36Vendedor) throws Exception{
		boolean encontrar=false;
			try{     
	    	    String id = (String)sqlMap.queryForObject("sqlExpVendedor.VerificaDniRuc",bnchf36Vendedor) ;
	    	 
	    	  
	            if(id ==null || id.equals("0")){
	            	encontrar=false;
	            }else{
	            	encontrar=true;
	            }
	         
	           return encontrar;
	        } catch (Exception e) {
	        	logger.error(" error  >"+e);
	        	return encontrar;
	        }
	}	 
	
	public String NextVendedor(Bnchf36Vendedor bnchf36Vendedor) throws Exception{
			
	       try {       
	    	    String id = (String)sqlMap.queryForObject("sqlExpVendedor.NextVendedor",bnchf36Vendedor);	    	    
	            if(id ==null){
	            	id="1";	            
	            }	             
	           
	            return id;
	        } catch (Exception e) {	        	
	            e.printStackTrace();
	            return "1";
	        }
	        
	}
	
}
